
// <copyright file="NativeMethods.cs" company="Subhadra Software Solutions">
//   
// </copyright>
// <summary>
//   The native methods.
// </summary>

namespace SubhadraSolutions.Sharp.Utils.Windows.Forms
{
    /// <summary>
    /// The native methods.
    /// </summary>
    public static class NativeMethods
    {
        #region Enumerations

        /// <summary>
        /// The olecmdexecopt.
        /// </summary>
        public enum OLECMDEXECOPT
        {
            // Fields
            /// <summary>
            /// The olecmdexecop t_ dodefault.
            /// </summary>
            OLECMDEXECOPT_DODEFAULT = 0, 

            /// <summary>
            /// The olecmdexecop t_ dontpromptuser.
            /// </summary>
            OLECMDEXECOPT_DONTPROMPTUSER = 2, 

            /// <summary>
            /// The olecmdexecop t_ promptuser.
            /// </summary>
            OLECMDEXECOPT_PROMPTUSER = 1, 

            /// <summary>
            /// The olecmdexecop t_ showhelp.
            /// </summary>
            OLECMDEXECOPT_SHOWHELP = 3
        }

        /// <summary>
        /// The olecmdf.
        /// </summary>
        public enum OLECMDF
        {
            // Fields
            /// <summary>
            /// The olecmd f_ defhideonctxtmenu.
            /// </summary>
            OLECMDF_DEFHIDEONCTXTMENU = 0x20, 

            /// <summary>
            /// The olecmd f_ enabled.
            /// </summary>
            OLECMDF_ENABLED = 2, 

            /// <summary>
            /// The olecmd f_ invisible.
            /// </summary>
            OLECMDF_INVISIBLE = 0x10, 

            /// <summary>
            /// The olecmd f_ latched.
            /// </summary>
            OLECMDF_LATCHED = 4, 

            /// <summary>
            /// The olecmd f_ ninched.
            /// </summary>
            OLECMDF_NINCHED = 8, 

            /// <summary>
            /// The olecmd f_ supported.
            /// </summary>
            OLECMDF_SUPPORTED = 1
        }

        /// <summary>
        /// The olecmdid.
        /// </summary>
        public enum OLECMDID
        {
            // Fields
            /// <summary>
            /// The olecmdi d_ pagesetup.
            /// </summary>
            OLECMDID_PAGESETUP = 8, 

            /// <summary>
            /// The olecmdi d_ print.
            /// </summary>
            OLECMDID_PRINT = 6, 

            /// <summary>
            /// The olecmdi d_ printpreview.
            /// </summary>
            OLECMDID_PRINTPREVIEW = 7, 

            /// <summary>
            /// The olecmdi d_ properties.
            /// </summary>
            OLECMDID_PROPERTIES = 10, 

            /// <summary>
            /// The olecmdi d_ saveas.
            /// </summary>
            OLECMDID_SAVEAS = 4, 

            // OLECMDID_SHOWSCRIPTERROR = 40
        }

        #endregion Enumerations

        #region Other

        // [StructLayout(LayoutKind.Sequential)]
        // public public class POINT
        // {
        // public int x;
        // public int y;
        // public POINT() { }
        // public POINT(int x, int y)
        // {
        // this.x = x;
        // this.y = y;
        // }
        // }
        // [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"), ComVisible(true)]
        // public interface IOleCommandTarget
        // {
        // [return: MarshalAs(UnmanagedType.I4)]
        // [PreserveSig]
        // int QueryStatus(ref Guid pguidCmdGroup, int cCmds, [In, Out] NativeMethods.OLECMD prgCmds, [In, Out] IntPtr pCmdText);
        // [return: MarshalAs(UnmanagedType.I4)]
        // [PreserveSig]
        // int Exec(ref Guid pguidCmdGroup, int nCmdID, int nCmdexecopt, [In, MarshalAs(UnmanagedType.LPArray)] object[] pvaIn, ref int pvaOut);
        // }
        // [StructLayout(LayoutKind.Sequential)]
        // public public class OLECMD
        // {
        // [MarshalAs(UnmanagedType.U4)]
        // public int cmdID;
        // [MarshalAs(UnmanagedType.U4)]
        // public int cmdf;
        // public OLECMD()
        // {
        // }
        // }
        // public const int S_FALSE = 1;
        // public const int S_OK = 0;
        #endregion Other
    }
}
